//  @ Project : GagalPanen
//  @ File Name : plantablecell.hpp
//  @ Date : 3/9/2011
//  @ Author : 
//
//


#if !defined(_PLANTABLECELL_H)
#define _PLANTABLECELL_H

#include <fstream>
#include "cell.hpp"

class PlantableCell : public Cell {
public:

  // normal constructor
  PlantableCell(GameInterface* game);

  // load game constructor
  PlantableCell(GameInterface* game, std::ifstream& is);

  virtual void save(std::ofstream& os);

  virtual ~PlantableCell();
  void advanceDay();
  void advanceTime();

  // can under any circumstance this cell be entered?
  bool isEnterable();
  bool isPlantable();
  bool isPlanted();
  bool isPlowed();

  // can this cell be stepped by player?
  bool isSteppable();
  bool isWatered();
  bool isBurning();
  void plow();
  void unplow();
  void water();
  void burn();
  void removePlant();
  
private:
  bool is_plowed_;
  bool is_watered_;
  bool is_burning_;
};

#endif  //_PLANTABLECELL_H
